
import core

class DotAttribute(object):
    def __init__(self, inName, inValue):
        self.__name = inName
        self.__value = inValue
        
    def getName(self):
        return self.__name
    
    def getValue(self):
        return self.__value
    
    def setValue(self, inValue):
        if type(self.__value) == type(inValue):
            self.__value = inValue
        else:
            raise core.PyGraphError, 'Attribute %s is of type %s and it can\'t be assigned to a %s.' %(self.__name, type(self.__value), type(inValue))


class GraphAttributes(object):
    comment            = DotAttribute('comment', '')
    remincross         = DotAttribute('remincross', None)
    levelsgap          = DotAttribute('levelsgap', None)
    fontnames          = DotAttribute('fontnames', None)
    orientation        = DotAttribute('orientation', None)
    layers             = DotAttribute('layers', None)
    clusterrank        = DotAttribute('clusterrank', 'local')
    rank               = DotAttribute('rank', None)
    nslimit1           = DotAttribute('nslimit1', None)
    sep                = DotAttribute('sep', None)
    normalize          = DotAttribute('normalize', None)
    Damping            = DotAttribute('Damping', 0.99)
    quantum            = DotAttribute('quantum', None)
    root               = DotAttribute('root', None)
    landscape          = DotAttribute('landscape', None)
    size               = DotAttribute('size', None)
    diredgeconstraints = DotAttribute('diredgeconstraints', False)
    fontname           = DotAttribute('fontname', None)
    showboxes          = DotAttribute('showboxes', None)
    ratio              = DotAttribute('ratio', None)
    esep               = DotAttribute('esep', None)
    ordering           = DotAttribute('ordering', None)
    charset            = DotAttribute('charset', 'UTF-8')
    stylesheet         = DotAttribute('stylesheet', None)
    outputorder        = DotAttribute('outputorder', None)
    label              = DotAttribute('label', None)
    bgcolor            = DotAttribute('bgcolor', 'white')
    fontpath           = DotAttribute('fontpath', None)
    pad                = DotAttribute('pad', None)
    lp                 = DotAttribute('lp', None)
    maxiter            = DotAttribute('maxiter', None)
    fontcolor          = DotAttribute('fontcolor', None)
    voro_margin        = DotAttribute('voro_margin', None)
    start              = DotAttribute('start', None)
    nodesep            = DotAttribute('nodesep', None)
    labelloc           = DotAttribute('labelloc', None)
    nojustify          = DotAttribute('nojustify', None)
    labeljust          = DotAttribute('labeljust', None)
    bb                 = DotAttribute('bb', '')
    URL                = DotAttribute('URL', '')
    epsilon            = DotAttribute('epsilon', 0.001)
    K                  = DotAttribute('K', 0.3)
    mosek              = DotAttribute('mosek', None)
    ranksep            = DotAttribute('ranksep', None)
    packmode           = DotAttribute('packmode', None)
    concentrate        = DotAttribute('concentrate', False)
    fontsize           = DotAttribute('fontsize', None)
    splines            = DotAttribute('splines', None)
    compound           = DotAttribute('compound', False)
    searchsize         = DotAttribute('searchsize', None)
    viewport           = DotAttribute('viewport', None)
    overlap            = DotAttribute('overlap', None)
    dim                = DotAttribute('dim', 2)
    rotate             = DotAttribute('rotate', None)
    center             = DotAttribute('center', False)
    rankdir            = DotAttribute('rankdir', None)
    colorscheme        = DotAttribute('colorscheme', '')
    resolution         = DotAttribute('resolution', None)
    truecolor          = DotAttribute('truecolor', None)
    page               = DotAttribute('page', None)
    defaultdist        = DotAttribute('defaultdist', 1.0)
    mclimit            = DotAttribute('mclimit', None)
    mindist            = DotAttribute('mindist', None)
    mode               = DotAttribute('mode', None)
    target             = DotAttribute('target', None)
    pagedir            = DotAttribute('pagedir', None)
    model              = DotAttribute('model', None)
    pack               = DotAttribute('pack', None)
    margin             = DotAttribute('margin', None)
    layersep           = DotAttribute('layersep', None)
    dpi                = DotAttribute('dpi', 96.0)
    nslimit            = DotAttribute('nslimit', None)

class EdgeAttributes(object):
    comment        = DotAttribute('comment', '')
    layer          = DotAttribute('layer', None)
    tailtarget     = DotAttribute('tailtarget', None)
    labelfloat     = DotAttribute('labelfloat', None)
    ltail          = DotAttribute('ltail', None)
    color          = DotAttribute('color', 'black')
    pos            = DotAttribute('pos', None)
    labeltarget    = DotAttribute('labeltarget', None)
    samehead       = DotAttribute('samehead', None)
    arrowsize      = DotAttribute('arrowsize', 1.0)
    href           = DotAttribute('href', None)
    sametail       = DotAttribute('sametail', None)
    headURL        = DotAttribute('headURL', None)
    tailhref       = DotAttribute('tailhref', None)
    fontname       = DotAttribute('fontname', None)
    showboxes      = DotAttribute('showboxes', None)
    arrowhead      = DotAttribute('arrowhead', 'normal')
    weight         = DotAttribute('weight', None)
    labeltooltip   = DotAttribute('labeltooltip', None)
    labelangle     = DotAttribute('labelangle', None)
    tooltip        = DotAttribute('tooltip', None)
    label          = DotAttribute('label', None)
    lhead          = DotAttribute('lhead', None)
    arrowtail      = DotAttribute('arrowtail', 'normal')
    lp             = DotAttribute('lp', None)
    headtooltip    = DotAttribute('headtooltip', None)
    fontcolor      = DotAttribute('fontcolor', None)
    edgetooltip    = DotAttribute('edgetooltip', '')
    style          = DotAttribute('style', None)
    labelURL       = DotAttribute('labelURL', None)
    nojustify      = DotAttribute('nojustify', None)
    headclip       = DotAttribute('headclip', None)
    headport       = DotAttribute('headport', None)
    URL            = DotAttribute('URL', '')
    labelfontname  = DotAttribute('labelfontname', None)
    edgeURL        = DotAttribute('edgeURL', '')
    len            = DotAttribute('len', None)
    labelfontsize  = DotAttribute('labelfontsize', None)
    headlabel      = DotAttribute('headlabel', None)
    edgetarget     = DotAttribute('edgetarget', '')
    fontsize       = DotAttribute('fontsize', None)
    rank           = DotAttribute('rank', None)
    tailport       = DotAttribute('tailport', None)
    labeldistance  = DotAttribute('labeldistance', None)
    headtarget     = DotAttribute('headtarget', None)
    edgehref       = DotAttribute('edgehref', '')
    taillabel      = DotAttribute('taillabel', None)
    labelfontcolor = DotAttribute('labelfontcolor', None)
    target         = DotAttribute('target', None)
    colorscheme    = DotAttribute('colorscheme', '')
    tailtooltip    = DotAttribute('tailtooltip', None)
    constraint     = DotAttribute('constraint', True)
    tailURL        = DotAttribute('tailURL', None)
    labelhref      = DotAttribute('labelhref', None)
    minlen         = DotAttribute('minlen', None)
    decorate       = DotAttribute('decorate', False)
    tailclip       = DotAttribute('tailclip', None)
    headhref       = DotAttribute('headhref', None)
    dir            = DotAttribute('dir', 'forward')
            
class NodeAttributes(object):
    comment      = DotAttribute('comment', '')
    layer        = DotAttribute('layer', None)
    orientation  = DotAttribute('orientation', None)
    pin          = DotAttribute('pin', None)
    color        = DotAttribute('color', 'black')
    showboxes    = DotAttribute('showboxes', None)
    image        = DotAttribute('image', None)
    pos          = DotAttribute('pos', None)
    distortion   = DotAttribute('distortion', 0.0)
    shape        = DotAttribute('shape', None)
    peripheries  = DotAttribute('peripheries', None)
    fontname     = DotAttribute('fontname', None)
    samplepoints = DotAttribute('samplepoints', None)
    group        = DotAttribute('group', None)
    fixedsize    = DotAttribute('fixedsize', None)
    skew         = DotAttribute('skew', None)
    tooltip      = DotAttribute('tooltip', None)
    label        = DotAttribute('label', None)
    width        = DotAttribute('width', None)
    texmode      = DotAttribute('texmode', None)
    imagescale   = DotAttribute('imagescale', None)
    nojustify    = DotAttribute('nojustify', None)
    URL          = DotAttribute('URL', '')
    style        = DotAttribute('style', None)
    regular      = DotAttribute('regular', None)
    fontsize     = DotAttribute('fontsize', None)
    fillcolor    = DotAttribute('fillcolor', None)
    fontcolor    = DotAttribute('fontcolor', None)
    height       = DotAttribute('height', None)
    sides        = DotAttribute('sides', None)
    target       = DotAttribute('target', None)
    colorscheme  = DotAttribute('colorscheme', '')
    root         = DotAttribute('root', None)
    vertices     = DotAttribute('vertices', None)
    shapefile    = DotAttribute('shapefile', None)
    rects        = DotAttribute('rects', None)
    z            = DotAttribute('z', None)
    margin       = DotAttribute('margin', None)
    texlbl       = DotAttribute('texlbl', None)

class ClusterAttributes(object):
    labelloc    = DotAttribute('labelloc', None)
    fontname    = DotAttribute('fontname', None)
    labeljust   = DotAttribute('labeljust', None)
    colorscheme = DotAttribute('colorscheme', '')
    URL         = DotAttribute('URL', '')
    K           = DotAttribute('K', 0.3)
    tooltip     = DotAttribute('tooltip', None)
    nojustify   = DotAttribute('nojustify', None)
    pencolor    = DotAttribute('pencolor', None)
    label       = DotAttribute('label', None)
    bgcolor     = DotAttribute('bgcolor', 'white')
    style       = DotAttribute('style', None)
    fontsize    = DotAttribute('fontsize', None)
    fillcolor   = DotAttribute('fillcolor', None)
    lp          = DotAttribute('lp', None)
    fontcolor   = DotAttribute('fontcolor', None)
    peripheries = DotAttribute('peripheries', None)
    color       = DotAttribute('color', 'black')
    target      = DotAttribute('target', None)